<template>
    <div>
        <div class="type-nav">
            <div class="container" >
                <h2 class="all"  @mouseleave="handleOut" @mouseenter="show" @click="goSearch">
                    全部商品分类
                    <transition name="sort">
                        <div class="sort" v-show="listSHow">
                            <div class="all-sort-list2">
                                <div class="item"  v-for=" (item,index) in typeList" :key='item.categroyId'>
                                    <h3 :class="{item_active:index===showIndex}"   @mouseenter="handleActive(index)">
                                        <a  :data-categoryName="item.categoryName"
                                            :data-categroyId1="item.categoryId"
                                        >{{item.categoryName}}</a>
                                    </h3>
                                    <div class="item-list clearfix" :class="{active:index===showIndex}">
                                        <div class="subitem">
                                            <dl class="fore"   v-for="item1 in item.categoryChild" :key="item1.categoryId">
                                                <dt>
                                                    <a :data-categoryName="item1.categoryName"
                                                    :data-categroyId2="item1.categoryId"
                                                    >{{item1.categoryName}}</a>
                                                </dt>
                                                <dd>
                                                    <em v-for="item2 in item1.categoryChild" :key="item2.categoryId" >
                                                        <a 
                                                            :data-categoryName="item2.categoryName"
                                                            :data-categroyId3="item2.categoryId"
                                                        >{{item2.categoryName}}</a>
                                                    </em>
                                                </dd>
                                            </dl>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </transition>
                </h2>
                <nav class="nav">
                    <a href="###">服装城</a>
                    <a href="###">美妆馆</a>
                    <a href="###">尚品汇超市</a>
                    <a href="###">全球购</a>
                    <a href="###">闪购</a>
                    <a href="###">团购</a>
                    <a href="###">有趣</a>
                    <a href="###">秒杀</a>
                </nav>
                
            </div>
        </div>
    </div>
</template>
<script>
//节流
 function Throttling(func,time){
    let f=true;
    function ss(index){
        if(f){
            setTimeout(()=>{
                    f=true
            },time)
            func.call(this,index)
            f=false
        }
    }
    return ss
}
export default {
    name:'TypeNav',
    
    data(){
        return{
            showIndex:-1,
            listSHow:this.isShow
        }
    },
    methods:{
        handleActive:Throttling(function(index){
            this.showIndex=index
        },10),
        handleOut(){
            this.showIndex=-1
            if(!this.isShow){
                this.listSHow=false
            }
        }, 
        show(){
            if(!this.isShow){
                this.listSHow=true
            }
        },
        goSearch(e){
            const{categoryname,categroyid1,categroyid2,categroyid3}=e.target.dataset
            const params={}
             params.keyword=undefined
            if(this.$route.params.keyword){
                 params.keyword=this.$route.params.keyword
            }
            let query={}
            if(categoryname){
                query.categoryName=categoryname
                if(categroyid1){
                    query.categroy1Id=categroyid1
                }
                if(categroyid2){
                    query.categroy2Id=categroyid2
                }
                if(categroyid3){
                    query.categroy3Id=categroyid3
                }
                this.$router.push({name:'search',query,params})
            }
        }
    },
    mounted(){
        this.$store.dispatch('getTypes')
    },
    computed:{
        typeList(){
           return  this.$store.state.home.types
        }
    },
    props:['isShow']
}
</script>
<style lang="less" scoped>
.type-nav {
        border-bottom: 2px solid #e1251b;
        
        .container {
            width: 1200px;
            margin: 0 auto;
            display: flex;
            position: relative;
            .all {
                .sort-enter{
                    opacity:0
                }
                .sort-enter-to{
                    height:10;
                }
                .sort-enter-active{
                    transition: all 0.5s linear; 
                }
                width: 210px;
                height: 45px;
                background-color: #e1251b;
                line-height: 45px;
                text-align: center;
                color: #fff;
                font-size: 14px;
                font-weight: bold;
            }

            .nav {
                a {
                    height: 45px;
                    margin: 0 22px;
                    line-height: 45px;
                    font-size: 16px;
                    color: #333;
                }
            }

            .sort {
                position: absolute;
                left: 0;
                top: 45px;
                width: 210px;
                height: 461px;
                position: absolute;
                background: #fafafa;
                z-index: 999;

                .all-sort-list2 {
                    .item {
                        h3 {
                            line-height: 30px;
                            font-size: 14px;
                            font-weight: 400;
                            overflow: hidden;
                            padding: 0 20px;
                            margin: 0;

                            a {
                                color: #333;
                            }
                        }

                        .item-list {
                            display: none;
                            position: absolute;
                            width: 734px;
                            min-height: 460px;
                            background: #f7f7f7;
                            left: 210px;
                            border: 1px solid #ddd;
                            top: 0;
                            z-index: 9999 !important;

                            .subitem {
                                float: left;
                                width: 650px;
                                padding: 0 4px 0 8px;

                                dl {
                                    border-top: 1px solid #eee;
                                    padding: 6px 0;
                                    overflow: hidden;
                                    zoom: 1;

                                    &.fore {
                                        border-top: 0;
                                    }

                                    dt {
                                        float: left;
                                        width: 54px;
                                        line-height: 22px;
                                        text-align: right;
                                        padding: 3px 6px 0 0;
                                        font-weight: 700;
                                    }

                                    dd {
                                        float: left;
                                        width: 415px;
                                        padding: 3px 0 0;
                                        overflow: hidden;

                                        em {
                                            float: left;
                                            height: 14px;
                                            line-height: 14px;
                                            padding: 0 8px;
                                            margin-top: 5px;
                                            border-left: 1px solid #ccc;
                                        }
                                    }
                                }
                            }
                        }
                        .active{
                            display: block;
                        }
                        
                    }
                }
                .item_active{
                    background-color: blue;
                }
            }
        }
}

</style>